<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			/*
			创建一个函数，可以在控制台输出一个人的信息
				可以输出人的，name,age,gender,address
			实参可以是任意的数据类型，也可以是对象
			当我们参数过多时，可以将参数封装到一个对象中，然后通过对象传播
			*/
			
			// function sayHello(name,age,gender,address){
			// 	console.log("我是"+name+"，今年我"+age+"岁了,"+"我是一个"+gender+"人，家在"+address);
			// }
			// sayHello("猪八戒",28,"男","高老庄");
			//参数过多时，我们可以考虑把参数封装到一个对象中
			function sayHello(o){
				//console.log(o);
				console.log("我是"+o.name+"，今年我"+o.age+"岁了,"+"我是一个"+o.gender+"人，家在"+o.address);
			}
			var obj = {
				name:"孙悟空",
				age:18,
				address:"花果山",
				gender:"男"
			};
			//对象名和形参名不是必须相同的，因为调用函数后会把对象给形参
			
			//sayHello(obj);
			
			/*
			实参可以是一个对象，也可以是一个函数
			因为函数是一个功能强大的对象
			对象能干的函数也能干
			*/
			
			
			
			function fun(a){
				a(obj);
			}
			fun(sayHello);
			//将一个匿名函数作为实参,在后续的作用中会经常用到
			
			//fun(function(){alert("hello")});
			
			fun(mainji(10));
			
			/*
			mainji()
				调用函数
				相当于使用的是函数的返回值
			mianji
				函数对象本身
				相当于直接使用函数对象
			*/
			
		</script>
	</body>
</html>
